{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from selenium import webdriver\n",
    "\n",
    "from selenium.webdriver.chrome.options import Options\n",
    "chrome_options = Options()\n",
    "chrome_options.add_argument('--headless')\n",
    "\n",
    "br = webdriver.Chrome(chrome_options=chrome_options) # 启动浏览器\n",
    "\n",
    "br.get('https://www.tmall.com')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "ename": "ConnectionAbortedError",
     "evalue": "[WinError 10053] 你的主机中的软件中止了一个已建立的连接。",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mConnectionAbortedError\u001b[0m                    Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-21-e6902b771b59>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0minput_element\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element_by_xpath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'//*[@id=\"mq\"]'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0minput_element\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0minput_element\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend_keys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"笔芯\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0msearch_element\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element_by_xpath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'//*[@id=\"mallSearch\"]/form/fieldset/div/button'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0msearch_element\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py\u001b[0m in \u001b[0;36mfind_element_by_xpath\u001b[0;34m(self, xpath)\u001b[0m\n\u001b[1;32m    311\u001b[0m             \u001b[0mdriver\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element_by_xpath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'//div/td[1]'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    312\u001b[0m         \"\"\"\n\u001b[0;32m--> 313\u001b[0;31m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mby\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mBy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mXPATH\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    314\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    315\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mfind_elements_by_xpath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py\u001b[0m in \u001b[0;36mfind_element\u001b[0;34m(self, by, value)\u001b[0m\n\u001b[1;32m    789\u001b[0m         return self.execute(Command.FIND_ELEMENT, {\n\u001b[1;32m    790\u001b[0m             \u001b[1;34m'using'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mby\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 791\u001b[0;31m             'value': value})['value']\n\u001b[0m\u001b[1;32m    792\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    793\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mfind_elements\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mby\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mBy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mID\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py\u001b[0m in \u001b[0;36mexecute\u001b[0;34m(self, driver_command, params)\u001b[0m\n\u001b[1;32m    252\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    253\u001b[0m         \u001b[0mparams\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_wrap_value\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 254\u001b[0;31m         \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcommand_executor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdriver_command\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    255\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    256\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merror_handler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcheck_response\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\site-packages\\selenium\\webdriver\\remote\\remote_connection.py\u001b[0m in \u001b[0;36mexecute\u001b[0;34m(self, command, params)\u001b[0m\n\u001b[1;32m    462\u001b[0m         \u001b[0mpath\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstring\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTemplate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcommand_info\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msubstitute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    463\u001b[0m         \u001b[0murl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'%s%s'\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_url\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 464\u001b[0;31m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_request\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcommand_info\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    465\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    466\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_request\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\site-packages\\selenium\\webdriver\\remote\\remote_connection.py\u001b[0m in \u001b[0;36m_request\u001b[0;34m(self, method, url, body)\u001b[0m\n\u001b[1;32m    485\u001b[0m                 \u001b[0mbody\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    486\u001b[0m             \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 487\u001b[0;31m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_conn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparsed_url\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    488\u001b[0m                 \u001b[0mresp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_conn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    489\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mhttplib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mHTTPException\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merror\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m   1237\u001b[0m                 encode_chunked=False):\n\u001b[1;32m   1238\u001b[0m         \u001b[1;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1239\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1240\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   1241\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_send_request\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_request\u001b[0;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[1;32m   1283\u001b[0m             \u001b[1;31m# default charset of iso-8859-1.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   1284\u001b[0m             \u001b[0mbody\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'body'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1285\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1286\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   1287\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mgetresponse\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m   1232\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   1233\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1235\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   1236\u001b[0m     def request(self, method, url, body=None, headers={}, *,\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m   1063\u001b[0m                     \u001b[0mchunk\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34mf'{len(chunk):X}\\r\\n'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'ascii'\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   1064\u001b[0m                         \u001b[1;33m+\u001b[0m \u001b[1;34mb'\\r\\n'\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1065\u001b[0;31m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchunk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1066\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m   1067\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mencode_chunked\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_http_vsn\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m11\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mC:\\Users\\Hus\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m    984\u001b[0m             \u001b[1;32mreturn\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    985\u001b[0m         \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 986\u001b[0;31m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msendall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    987\u001b[0m         \u001b[1;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m    988\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcollections\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIterable\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mConnectionAbortedError\u001b[0m: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。"
     ]
    }
   ],
   "source": [
    "input_element = br.find_element_by_xpath('//*[@id=\"mq\"]')\n",
    "input_element.clear()\n",
    "input_element.send_keys(\"笔芯\")\n",
    "search_element = br.find_element_by_xpath('//*[@id=\"mallSearch\"]/form/fieldset/div/button')\n",
    "search_element.click()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "html_str = br.page_source"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from lxml import etree\n",
    "html = etree.HTML(html_str)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "60\n"
     ]
    }
   ],
   "source": [
    "products = html.xpath('.//div[@id=\"J_ItemList\"]/div')\n",
    "print(len(products))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['晨光中性笔芯 水笔芯全针管替芯黑红色0.5mm笔芯0.38批发买一盒送子弹头碳素孔庙祈福0.35笔心0.7墨蓝色笔蕊'] ['10.00'] ['\\n环中办公专营店\\n']\n",
      "['晨光G-5按动笔芯晨光按动中性笔芯0.5MM 红墨蓝黑色水笔芯k35替芯子弹头替换学生g5按压笔芯批发文具买一盒送'] ['17.20'] ['\\n优优办公专营店\\n']\n",
      "['晨光中性笔芯孔庙祈福0.5全针管子弹头碳素黑墨水蓝红墨蓝色水笔替芯0.38批发0.35mm买一盒送中性笔笔芯包邮'] ['10.20'] ['\\n晨光晨日专卖店\\n']\n",
      "['得力文具学生中性笔芯0.38子弹头水笔替芯全针管0.5黑红蓝色批发0.35mm办公书写水笔芯20支装买送中性笔一支'] ['8.80'] ['\\n得力官方旗舰店\\n']\n",
      "['60支晨光孔庙祈福笔芯中性水笔心0.35/0.5mm替芯买一盒送0.38批发100支装黑蓝色小清新女全针管子弹头学生用'] ['22.90'] ['\\n名卓办公用品专营店\\n']\n",
      "['晨光笔芯0.5黑色女中性笔芯0.38mm优品替芯0.35学生用米菲墨蓝0.38子弹头男孔庙祈福笔芯全针管碳素红水笔芯'] ['50.90'] ['\\n晨光大埠专卖店\\n']\n",
      "['包邮真彩笔芯0.5mm黑色全针管60支桶装0.38小清新碳素黑女学生考试用0.35子弹头水笔红色替芯100支装中性笔芯'] ['16.80'] ['\\n真彩彬发专卖店\\n']\n",
      "['得力笔芯0.5mm按动中性笔芯黑色子弹头水笔芯替芯黑红笔芯0.38批发全针管签字笔芯黑笔芯0.35黑笔笔芯包邮'] ['9.50'] ['\\ndeli得力齐岳专卖店\\n']\n",
      "['爱好笔芯0.38黑女水笔芯0.5黑色全针管红色0.35子弹头学生用考试批发包邮0.2极细0.7mm晶蓝替芯0.5mm中性笔芯'] ['9.00'] ['\\n爱好文具旗舰店\\n']\n",
      "['真彩中性笔替芯 学生水笔芯0.5mm黑色子弹头全针管头60支筒装小清新初高中生考试碳素水笔心bixin批发送笔'] ['15.80'] ['\\n真彩轩常专卖店\\n']\n",
      "['得力笔芯中性笔芯替芯 黑色水笔芯子弹头笔芯0.5mm黑色红笔芯0.38黑笔芯全针管水笔芯黑笔芯'] ['22.00'] ['\\ndeli得力齐岳专卖店\\n']\n",
      "['100支装中性笔芯0.5黑色学生用考试女生签字0.38/0.35mm 全针管子弹头办公碳素晶墨蓝色替芯水红笔芯批发包邮'] ['14.90'] ['\\n端翔文具专营店\\n']\n",
      "['新简约 可擦笔笔芯 小学生3-5年级摩磨魔热可易力消乐擦檫 60支学生用全针管子弹头0.5mm替芯儿晶蓝色 包邮'] ['28.80'] ['\\n雅艺办公用品专营店\\n']\n",
      "['真彩中性笔芯0.5黑色红蓝色0.38/0.35全针管0.2mm子弹头水笔替芯水笔芯办公文具批发'] ['9.90'] ['\\ntruecolor真彩旗舰店\\n']\n",
      "['100支装中性笔芯0.5黑色学生用考试女生签字0.38/0.35mm 全针管子弹头办公碳素晶墨蓝色替芯水红笔芯批发包邮'] ['14.90'] ['\\n名卓办公用品专营店\\n']\n",
      "['得力笔芯0.5黑色中性笔芯全针管水笔替芯红0.35学生考试用小清新可爱买一盒送批发晶蓝色笔蕊碳素子弹头0.38'] ['10.50'] ['\\ndeli得力仕博莱专卖店\\n']\n",
      "['听雨轩80支装中性笔芯0.5mm全针管水笔芯0.38学生用蓝红黑色笔芯女替芯文具包邮批发大容量韩国可爱小清新'] ['18.80'] ['\\n鸣志办公专营店\\n']\n",
      "['Lamy签字笔笔芯 德国凌美M63正品宝珠中性水笔替芯0.7mm'] ['48.00'] ['\\nlamy旗舰店\\n']\n",
      "['新简约80支装萌猫中性笔芯0.5/0.38mm全针管蓝色黑色红色子弹头签字笔蕊教师红碳素水考试速干替芯学生用黑女'] ['18.80'] ['\\n雅艺办公用品专营店\\n']\n",
      "['得力中性笔芯批发0.5mm子弹头黑色笔芯0.38替芯全针管水笔芯包邮'] ['9.90'] ['\\n得力众文专卖店\\n']\n",
      "['parker专柜正品派克笔芯 派克签字笔笔芯 派克宝珠笔芯0.5/0.7 官方正品商务高档办公专柜官方正品旗舰店送礼'] ['55.00'] ['\\n派克祺颂专卖店\\n']\n",
      "['爱好笔芯0.5黑色水笔芯0.38黑女全针管红色0.35子弹头按动学生用极细0.2mm晶蓝中性笔替芯0.7mm批发包邮'] ['7.98'] ['\\n爱好纯品专卖店\\n']\n",
      "['2倍转数日本UNI三菱M5-559笔芯自动旋转活动铅笔Kuru Toga小学生写不断铅自动铅笔ADVANCE考试铅笔0.3/0.5mm'] ['27.80'] ['\\n胜晋办公专营店\\n']\n",
      "['盒装包邮日本ZEBRA斑马JF-0.5笔芯考试学生用按动中性笔替芯适用JJ15水笔芯0.5mm'] ['49.80'] ['\\n胜晋办公专营店\\n']\n",
      "['英雄宝珠笔芯金属签字笔水笔替芯0.5/0.7mm直插/螺旋纹纯黑'] ['12.80'] ['\\n银杉办公用品专营店\\n']\n",
      "['盒装包邮 三菱UMR-85/85n中性笔芯按动水笔芯适用UMN-105/155/152 三菱按动0.5mm笔芯 替芯'] ['20.80'] ['\\n贤伊办公用品专营店\\n']\n",
      "['pilot日本百乐笔p500中性笔中小学生考试专用高考水笔办公书写针管走珠笔黑色签字笔文具用品套装0.5彩色笔芯'] ['43.90'] ['\\n古朝办公用品专营店\\n']\n",
      "['包邮日本三菱uni防疲劳按动中性笔签字笔水笔舒适软握胶UMN-207GG 学生作业考试书写黑色按动水笔可换笔芯'] ['50.00'] ['\\n趣梦办公专营店\\n']\n",
      "['日本uni三菱自动铅笔笔芯0.3/0.5/0.7mm小学生写不断铅芯2B/HB/2H'] ['6.50'] ['\\n联新办公专营店\\n']\n",
      "['真彩中性笔笔芯0.35/0.38/0.5蓝红黑色水笔 替芯子弹头全针管批发'] ['16.80'] ['\\n雅悦办公用品专营店\\n']\n",
      "['日本PILOT百乐LFBK-23EF按动彩色可擦性水笔中性笔0.5摩磨擦可擦笔 小学生热可擦笔芯'] ['7.02'] ['\\n鸣粤办公专营店\\n']\n",
      "['日本UNI三菱铅芯0.3/0.5/0.7/0.9-202ND纳米钻石特硬自动铅笔替芯 活动铅笔芯 黑色铅芯HB/2B/2H/3B/4B'] ['6.50'] ['\\n趣梦办公专营店\\n']\n",
      "['芮翔魔法字帖可消练字笔芯自动消失练字复写笔消字笔退色笔褪色笔芯凹槽练字贴的消失笔'] ['8.80'] ['\\n芮翔旗舰店\\n']\n",
      "['盒装包邮日本ZEBRA斑马JF-0.5笔芯考试学生用按动中性笔替芯适用JJ15水笔芯0.5mm黑红蓝盒装赠羽毛款黑笔'] ['38.80'] ['\\n裕派办公专营店\\n']\n",
      "['白雪直液式走珠笔学生用签字黑中性笔水0.5mm针管型直液可换墨囊水性笔碳素文具用品替芯笔芯0.38mm20支装X88'] ['16.80'] ['\\n尚品优绩办公专营店\\n']\n",
      "['爱好摩易擦笔芯0.5可擦中性晶蓝热可磨魔易擦R9黑色学生1650批发'] ['9.90'] ['\\n驰海办公专营店\\n']\n",
      "['芮翔80支装中性笔芯0.5黑色女全针管子弹头墨蓝红色水笔芯批发0.38mm碳素签字中性笔替芯0.35 0.28学生老师用'] ['19.80'] ['\\n芮翔旗舰店\\n']\n",
      "['真彩按动笔芯1588按动中性笔芯0.5MM 红墨蓝黑色水笔芯k35替芯子弹头A47替换学生g5按压笔芯批发文具盒装20支'] ['15.80'] ['\\n真彩轩常专卖店\\n']\n",
      "['智美雅可擦笔笔芯热可摩擦乐可擦笔芯学生可擦笔替芯黑蓝易擦笔芯'] ['24.80'] ['\\n智美雅旗舰店\\n']\n",
      "['60支罐装可擦中性笔芯0.5mm全针管小学生3-5年级用女生魔磨摩磨热易力可擦笔笔芯水笔芯替芯黑晶蓝色批发包邮'] ['19.90'] ['\\n端翔文具专营店\\n']\n",
      "['白雪直液式走珠笔替芯笔芯黑红蓝0.38mm0.5mm白雪中性笔笔芯20支子弹头针管型中性笔芯白雪文具'] ['13.50'] ['\\n白雪玉自寒专卖店\\n']\n",
      "['日本pilot百乐笔V5升级版 水笔签字中性笔直液式可换墨囊多色0.5mm学生用碳素笔彩色黑色水性笔走珠笔0.7笔芯'] ['7.15'] ['\\n离草办公专营店\\n']\n",
      "['白雪直液式走珠笔全针管型学生用速干黑色0.5直流液水笔红笔0.38中性笔可换墨囊替芯替换笔芯x88彩色裸色控女'] ['13.80'] ['\\n白雪轩然专卖店\\n']\n",
      "['爱好按动摩易擦笔芯子弹头晶蓝可擦全针管中性笔水笔芯热可魔磨力 摩易擦 0.5批发小学生用品'] ['19.90'] ['\\n爱好文具旗舰店\\n']\n",
      "['文曦0.5中性笔简约文艺小清新可爱卡通学生考试专用笔韩国风个性创意萌女生0.38mm全针管黑色碳素签字水笔芯'] ['9.90'] ['\\n培阳办公专营店\\n']\n",
      "['至尚创美 全针管黑色中性笔芯0.5 0.38替芯水笔芯80支 学生文具'] ['19.90'] ['\\n至尚创美办公专营店\\n']\n",
      "['爱好中性笔笔芯0.5MM黑色0.38全针管蓝红0.35子弹头.7中性0.2极细'] ['9.00'] ['\\n驰海办公专营店\\n']\n",
      "['下单送笔白雪笔芯X系列直液式走珠笔全针管0.5mm0.38mm速干笔中性笔芯学生用笔芯20支装X88X55红笔黑笔批发'] ['16.80'] ['\\n白雪官方旗舰店\\n']\n",
      "['天卓 2B自动铅笔2.0mm粗芯笔芯按动式小学生用HB木铅笔写不断2mm笔芯文具用品创意儿童免削活动铅笔可换芯笔'] ['9.90'] ['\\n坚洲办公专营店\\n']\n",
      "['彩色笔中性笔套装糖果色小清新做笔记的水笔黑学生用多色笔颜色笔芯韩国可爱创意文具用品简约女生手账专用笔'] ['15.80'] ['\\n承拓四海办公用品专营店\\n']\n",
      "['pilot日本百乐笔p500中性笔办公书写针管走珠笔黑色签字笔0.5彩色笔芯中小学生考试专用高考水笔文具用品套装'] ['26.34'] ['\\n古朝办公用品专营店\\n']\n",
      "['0.5mm中性笔黑色碳素笔学生用水笔新款红笔可爱蓝笔韩国好用的中性笔批发签字笔简约圆珠笔考试专用笔黑笔芯'] ['5.90'] ['\\n潜畅办公用品专营店\\n']\n",
      "['木笔木质签字笔 金属中性笔红木签名笔签单笔 高档商务男士礼品定制刻字 女士宝珠笔可换笔芯 高端笔送人礼物'] ['27.80'] ['\\n雅轩斋旗舰店\\n']\n",
      "['英雄宝珠笔芯金属签字笔水笔替芯0.5/0.7mm直插/螺旋纹纯黑色'] ['9.80'] ['\\n隆颢办公用品专营店\\n']\n",
      "['50支小清新0.5mm中性笔学生用签字笔碳素水笔韩国可爱卡通动漫文艺女黑色听雨轩0.38笔芯超好用顺滑创意批发'] ['28.50'] ['\\n懿仝办公专营店\\n']\n",
      "['至尚创美笔芯0.5黑色中性笔芯0.38mm全针管女学生用包邮桶装碳素'] ['29.90'] ['\\n一马平川办公用品专营店\\n']\n",
      "['文正圆珠笔笔芯 107mm标准按动圆珠笔芯 1.0mm 0.7mm办公学生用圆珠笔芯 红色蓝色黑色圆珠笔芯批发 油笔芯'] ['12.50'] ['\\nwinning文正旗舰店\\n']\n",
      "['至尚创美中性笔芯0.5碳素0.38水笔芯0.35mm全针管黑色红替芯批发'] ['19.90'] ['\\n至尚创美旗舰店\\n']\n",
      "['包邮盒装送笔日本zebra斑马JF-0.5笔芯按动中性笔笔芯 学生用JJ15替芯0.5mm黑色'] ['19.50'] ['\\n潮乐办公专营店\\n']\n",
      "['日本zebra斑马JF-0.5按动中性笔替芯学生用考试黑色水笔芯0.5mm适用JJ15'] ['3.90'] ['\\n联新办公专营店\\n']\n"
     ]
    }
   ],
   "source": [
    "for product in products:\n",
    "    title = product.xpath('./div/p[2]/a/@title')\n",
    "    price = product.xpath('./div/p[1]/em/@title')\n",
    "    shop = product.xpath('./div/div[2]/a[1]/text()')\n",
    "    print(title,price,shop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "br.quit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
